package coc.core.util;

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import coo.base.exception.UncheckedException;
import coo.base.util.Assert;

/**
 * 整数拾取器。
 */
public class IntPicker {
	/**
	 * 从字符串中获取第1个整数。
	 * 
	 * @param intStr
	 *            字符串
	 * @return 返回从字符串获取的整数。
	 */
	public static Integer get(String intStr) {
		return get(intStr, 0);
	}

	/**
	 * 从字符串中获取第N个整数。
	 * 
	 * @param intStr
	 *            字符串
	 * @param index
	 *            第N个
	 * @return 返回从字符串获取的整数。
	 */
	public static Integer get(String intStr, Integer index) {
		List<Integer> ints = getInts(intStr);
		if (ints.isEmpty()) {
			throw new UncheckedException("[" + intStr + "]中不包含整数。");
		}
		return ints.get(index);
	}

	/**
	 * 从字符串中获取所有整数列表。
	 * 
	 * @param intStr
	 *            字符串
	 * @return 返回从字符串获取的整数列表。
	 */
	public static List<Integer> getInts(String intStr) {
		Assert.notBlank(intStr);
		Pattern p = Pattern.compile("\\d+");
		Matcher m = p.matcher(intStr);
		List<Integer> ints = new ArrayList<Integer>();
		while (m.find()) {
			ints.add(Integer.parseInt(m.group()));
		}
		return ints;
	}
}
